Methods and apparatus for system having denial of services (dos) resistant multicast

ABSTRACT

Some embodiments described herein relate to a method that can include receiving, at a first time, first data for routing to a group. The first data can be sent to the group via a first multicast address that is based, at least in part, on a first key associated with a first time period and derived from a first shared secret. At a second time, second data for routing to the group can be received. The second data can be sent to the group via a second multicast address that is different from the first multicast address. The second multicast address can be based, at least in part, on a second key associated with a second time period and derived from a second shared secret.

CROSS REFERENCE TO RELATED APPLICATIONS

The present application claims the benefit of provisional U.S. Patent Application No. 62/250,301, filed Nov. 3, 2015 and entitled “Methods and Apparatus for System having Distributed Denial of Service (DDoS) Resistant Multicast” under 35 U.S.C. §119(e), the disclosure of which is hereby incorporated by reference in its entirety.

BACKGROUND

Some embodiments described herein relate to multicast routing, and denial-of-service (DoS) resistant multicasting.

Multicasting is a communication mechanism in which data is addressed to a group of compute devices (e.g., more than one compute device). A compute device to which multicast data is addressed is referred to herein as a recipient. A multicast address specifies the group of recipients and, optionally, parties that send data to the group of recipients. Routers, upon receiving data that includes a multicast address, can be operable to automatically and/or dynamically produce a multicast distribution tree by which the data is delivered to network segments that are in a path between a source (e.g., a compute device) and the recipients in the group. Such techniques can conserve network resources as compared to unicast or broadcast techniques, particularly when the group includes a large number of recipients. For example, such techniques can exclude routers and/or recipients that are not in a path between the source and the recipients and efficiently duplicate data when necessary to reach multiple recipients.

Known multicasting techniques are particularly vulnerable to DoS attacks. A malicious actor observing traffic over a multicast network can identify a multicast address and direct malicious traffic, which can include malformed packets that include the multicast address. Routers implementing known multicast protocols may pass this malicious traffic to downstream network nodes, which can have the effect of exacerbating the attack.

One known application of multicasting is in overlay hub-and-spoke networks, such as Internet Relay Chat (IRC) or Command and Control (C2) networks. Such networks may be overlaid on the global internet and are prone to failure. The hubs typically manage delivery membership of users and other hubs, so the loss of any spoke or hub can result in an extensive recovery procedure that may require users to “find” a new hub for service. In addition a large amount of retransmission may be required to re-sync the rejoining members. Because, the hubs, spokes, and the multicast addresses used to reach users of such a network are static and detectable by a malicious actor, such networks are vulnerable to DoS attacks, particularly distributed DoS (DDoS) attacks carried out by botnets.

Another application of multicasting is in mesh networks, such as those employed by Internet of Things (IoT) sensors and/or devices. When nodes of such a network receive a signal, they may replicate it to other nearby network nodes. When targeted by a malicious actor, such sensors and/or devices, which may be battery operated and/or have limited computational and/or network resources, may waste precious resources replaying malicious attack packets. A need therefore exists for DoS resistant multicast networks.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a schematic illustration of a multicast network, according to an embodiment.

FIG. 2 is an example of a multicast address having a randomness field.

FIG. 3 is a flow chart of a method for operating a node of a multicast network, according to an embodiment.

FIG. 4 is an illustration of a representation of a multicast address management policy, according to an embodiment.

FIG. 5 is a flow chart of a method for operating a node of a multicast network, according to an embodiment.

DETAILED DESCRIPTION

Some embodiments described herein relate to communication networks suitable for multicasting. Some such communication networks can be overlay networks that overlay on top of other communications networks, such as the internet. Other such communication networks can be mesh networks, such as are employed by Internet of Things (IoT) sensors or devices. Embodiments discussed in the present application are generally described in the context of Internet Protocol (IP) networks and/or addresses, but it should be understood that embodiments described herein can be applied to any suitable multicast environment. For example, rather than being applied at the transport layer, embodiments described herein can be applied at any other suitable layer. For example, techniques described herein can be applied to the application layer using uniform resource locators (URLs) and/or the domain name system (DNS) rather than IP addresses.

In general, some embodiments described herein relate to using agile or dynamic addresses for multicasting that may be difficult or impossible for a malicious actor to predict. Such agile addresses may prevent a malicious actor from attacking a single static multicast address and may prevent the architecture of the multicast network from propagating the attack. Data sent to invalid (e.g., expired, revoked, and/or otherwise depreciated addresses) can be filtered out and dropped from the network. In this way, some embodiments described herein allow data from trusted sources (e.g., trusted source compute devices and/or trusted routers) to be multicast to a group of recipients, while filtering out messages from malicious actors.

Some embodiments described herein relate to an apparatus, such as a router and/or node of a multicast network. The apparatus can include a processor, a memory, an input port configured to receive data, and an output port configured to send data. For example, the apparatus can be a computing entity having a Network Interface Controller (NIC), a cellular telephone radio, and/or any other suitable network access hardware and/or software. The apparatus can be configured to receive, via the input port, a data packet for distribution to a group. The data packet can include a multicast address. The processor can be configured to perform key management functions such periodically calculating group keys. For example, a first group key associated with a first time period can be calculated based on a first shared secret and a second group key associated with a second time period can be calculated based on a second shared secret. At any given time at least one group key can be an accepted group key. The apparatus can be configured to evaluate the data received via the input port and, when a portion of the multicast address matches a value determined based on a currently accepted group key, the data can be sent to a group. Conversely, when data received via the input port includes a multicast address that does not match a value determined based on a currently accepted group key, the data can be dropped and not sent to the group.

Some embodiments describe herein relate to a method of operating a node of a multicast network. Such a method can be a computer-implemented method. The method can include receiving a first data addressed to a first multicast address. The first multicast address can include a first group key that is associated with a first time period. Based on the first time period being less than a threshold number of time periods before the current time, the first data can be forwarded to a group of destination nodes. The method can also include receiving second data addressed to a second multicast address. The second multicast address can include a second group key that is associated with a second time period. The second data can be dropped (and not forwarded to the group of destination nodes) based on the second time period being more than a threshold number of time periods before the current time.

Some embodiments described herein relate to a method of operating a node of a multicast network. The method can include receiving, at a first time, first data for routing to a group. The first data can be sent to the group via a first multicast address that is based, at least in part, on a first group key associated with a first time period and derived from a first shared secret. At a second time, second data to be routed to the group can be received. The second data can be sent to the group via a second multicast address that is different from the first multicast address. The second multicast address can be based, at least in part, on a second group key associated with a second time period and derived from a second shared secret.

FIG. 1 is a schematic illustration of a multicast network 100, according to an embodiment. The multicast network 100 can include a source 110 and recipients 130. The source 110 and the recipients 130 can each be a computing entity (having a memory and a processor). Data sent by the source 110 can be transmitted to members of a multicast group 132 without requiring the source 110 to send a copy for each member of the multicast group 132. In some instances, the source 110 can send only a single copy of the data. Data can be routed from the source 110 to the members of the multicast group 132 while recipients 130 that are not members of the multicast group 132 do not receive the data.

The multicast network 100 includes a network 120 that can connect the source 110 to any number of recipients 130. The network 120 can be, for example, the Internet, an intranet, a local area network (LAN), a wide area network (WAN), a virtual network, a telecommunications network, a mesh network, any other suitable communication system and/or combination of such networks. The network 120 can be implemented as a wired and/or wireless network.

The network 120 can include any number of routers 122. Each router 122 can be a computing entity having a processor, a memory, an input port configured to receive data, and an output port to send data. In some instances, routers 122 can form at least a portion of an overlay network. For example, routers 122 can be connected by logical links (e.g., private links) that physically span the global internet or any other suitable network 120. The routers 122 can each be enabled to multicast messages and/or define multicast routes to members of one or more multicast groups. For example, the routers 122 can be enabled to multicast data, including a multicast address associated with the members of the multicast group 132, to the members of the multicast group 132 without sending such data to recipients 130 who are not members of the multicast group 134 and/or without sending data to routers 122 that are not on a path between the source 110 and the multicast group 132. Other data having a different multicast address associated with a different group can be sent to any suitable combination of recipients 130 via any suitable routers 122. Any of the source 110, routers 122, and recipients 130 can be referred to generically as “nodes.”

The routers 122 can each be configured to deliver data to one or more other routers 122 and/or recipients 130. Upon receiving data having a multicast address associated with the members of the multicast group 132, the routers 122 can dynamically produce a multicast distribution tree by which the data can be delivered to members of the multicast group 132 (also referred to herein “destination nodes”). For example, sender 110 can send a single copy of data, and routers 122 can be operable to send copies of data to multiple other routers 122 or members of the multicast group 132. For example, each router 122 can be operable to duplicate to send data to multiple other routers and/or members of the multicast group 132. As discussed in further detail herein, data sent from one node (e.g., the source 110 or a router 122) can include a multicast address. A router 122 receiving the data can use the multicast address to determine to which node(s) (e.g., router(s) 122 and/or recipient(s) 132) to which to forward data.

Known multicast routing schemes, however, are vulnerable to DoS attacks. For example, a malicious actor may be able to monitor traffic on a network (e.g., on the internet) and collect the multicast address. The malicious actor may then be able to send a large volume data, which may be malformed, to the multicast address, which can cause each of the routers to forward the data towards the multicast group, which can include some routers sending more than one copy of data to routers and/or members of the multicast group. Because routers in known multicast systems can duplicate data, such attacks can have a larger impact on multicast schemes than unicast systems. As a result, a DoS attack on a known multicast network can, in some instances, cripple a significant portion of routers capable of sending multicast data to recipients.

Returning to FIG. 1, some embodiments described herein relate to resilient multicast networks that are capable of updating the multicast address, which can reduce the effectiveness of an attack that uses a previously-used (e.g., static) multicast address. For example, some embodiments described herein relate to multicast addresses can expire and data addressed to old multicast addresses can be dropped, rather than being propagated through the multicast network.

In some instances, each multicast address can be based on a shared secret. For example, each router 122 and/or the source 110 can possess and/or store a password, passphrase, list of multicast addresses, etc. Each multicast address may be associated with a limited period of time or “epoch.” The routers 122 can be operable to determine the current epoch and drop data that includes a multicast address that is more than a threshold number of epochs old. Similarly stated, each router 122 can be operable to route data to the members of the multicast group 132 if the data is addressed with a multicast address for the current epoch or a multicast address associated with a limited number of previous epochs.

FIG. 2 is an example of a multicast address having a randomness field. The large address space of Internet Protocol version 6 (IPv6) makes it particularly well suited for DoS resistant multicasting. A multicast network operator can reserve a sufficiently large block of multicast addresses such that various multicast addresses can be used and discarded by that multicast network operator. A portion of the multicast address (e.g., the last 24 or 32 bits of the address or any other suitable portion of the interface identifier) can be a randomness field. Nodes of the multicast network (e.g., routers 122) can be operable to analyze the randomness field to determine whether the multicast address is currently accepted and/or valid. Although multicast addresses are generally described herein in the context of IPv6 it should be understood that any suitable addressing scheme can be used. For example, at the uniform resource locator (URL) level, a subdomain, argument, or path can be used as a randomness field.

The randomness field can be filled with a group key. Similarly stated, when assigning a multicast address a node (e.g., a source and/or router) can bind the group key to the randomness field to define a multicast address. In some embodiments, the group key is a portion and/or a hash of an output of a cryptographic function applied to the shared secret and/or a time associated with an epoch. In other embodiments, the group key can be derived from the shared secret using any other suitable technique. For example, the shared secret can be an ordered list of group keys, the shared secret can be hashed along with a time, and so forth. Because the group key may be difficult or impossible for a malicious attacker to predict, having the group key bound to the randomness field can produce a multicast address that appears to be random to entities monitoring network traffic.

In this way, the address for directing data to the members of the multicast group 132 can be periodically and/or automatically updated. Each router 122 can be synchronized to update the multicast address in concert using cryptographic key management protocols, such as those described in The Internet Engineering Task Force (IETF) Request for Comments (RFC) defining Group Secure Association Key Management Protocol (GSAKMP), RFC 4535-GSAKMP: Group Secure Association Key Management Protocol, H. Harney et al., The Internet Society, 2006; the disclosure of which is hereby incorporated by reference in its entirety. Similarly stated, based on the shared secret, each router 122 can independently determine a multicast address for the current epoch and/or the multicast address(es) for one or more previous epoch(s). Each router 122 can determine which multicast address(es) is currently accepted (e.g., the multicast address for the current epoch and, optionally, one or more multicast addresses for previous epochs). Each router 122 can further forward data having an accepted and/or valid multicast address to the next hop in the network and drop data having a depreciated multicast address. Periodically updating the multicast address can frustrate malicious actors' attempts to attack the multicast network. To effectively attack such a multicast network, a malicious actor would need to continuously update the multicast address to which the attack is directed. By changing addresses in an unpredictable manner and/or frequently updating the multicast address, a malicious actor would need to constantly capture multicast addresses and redirect the attack. In the case of distributed DoS attacks, it may be difficult or impossible to coordinate a botnet to keep up with changing multicast addresses, which can reduce or eliminate the effectiveness of the attack and/or increase the resiliency of the multicast network.

In addition, multicast addresses can make use of Logical Key Hierarchies (LKHs) that can allow a single message (or set of messages intended for a single group of recipients) to change which nodes are used to route the message from one node to another. For example, a single multicast group (e.g., including recipients and routers) can be split into multiple multicast groups, or multiple multicast groups can be combined into a single multicast group. In this way, nodes that are compromised by, for example, a DoS attack can be excluded from the network topology, allowing the message to be routed around congested or compromised portions of the network. Similarly, multiple delivery paths could be added for critical message delivery, for example, when an important asset is being attacked. These features can increase the probability of operation in the presence of a DoS attack.

FIG. 3 is a flow chart of a method for operating a node (e.g., a router, switch, or other suitable network device) of a multicast network, according to an embodiment. A multicast network that includes nodes operating according to the method of FIG. 3 can be resistant to DoS attacks.

At 310, first data can be received for routing to a multicast group. For example, a source, such as source 110 described above with reference to FIG. 1, can send the first data to an edge router, which can be configured to assign a multicast address so that the first data can be routed through the network to a multicast group. In other instances, the first data can include a multicast address. For example, the source can be configured to assign a multicast address to the data and/or at least one router can be disposed between the source and the node that received the first data, at 310.

At 320, the first data can be sent to the multicast group (e.g. directly and/or via intervening nodes) via a first multicast address. The first multicast address can be based, at least in part, on a first group key derived from a shared secret. For example, as discussed above with reference to FIG. 2, a randomness field of the first multicast address can be filled with a group key that is calculated based on a shared secret and, optionally, a first time. The first time can be associated with the original transmission of the first data (e.g., from the source 110). In this way, the first multicast address can be associated with an epoch, which can have a predetermined and/or configurable duration. The first multicast address can expire, be revoked, or otherwise be depreciated when the epoch ends and/or when a predetermined and/or configurable additional number of epochs have elapsed. Similarly stated, nodes of the multicast network can be configured to route the first data towards the multicast group while the first multicast address is accepted and/or valid. For example, each node of a multicast network can store a shared secret that can be used to validate the first multicast address (or a portion thereof).

At 330, second data can be received for routing to the multicast group. In some instances, the second data received, at 330, can be received with a second multicast address. In other instances, after receiving the second data, at 330, a second multicast address can be assigned to the second data.

At 340, the second data can be sent to the multicast group via the second multicast address. The second multicast address can be different from the first multicast address, but the node can be operable to route the second data to the same multicast group to which the first data was sent, at 320. Similarly stated, the multicast address for routing data to the multicast group can be periodically updated. Each updated multicast address (e.g., each updated group key) can be associated with an epoch, and each node (e.g., each router 122 described above with reference to FIG. 1) can be operable to validate multicast addresses and forward data if the multicast address is associated with a current epoch or a predetermined and/or configurable number of previous epochs. For example, if third data that includes the first multicast address is received after the first data is received at 310 and after the first multicast address has been depreciated (e.g., expired and/or revoked), the third data can be dropped even though the first multicast address was used to send the first data to the multicast group, at 320, at an earlier time. In this way, replay attacks and/or attacks developed based on intercepting data that included the first multicast address can be thwarted and/or rendered less effective. As another example, the first multicast address can be revoked by an administrator after the first data is sent to the multicast group at 320 such that future data that includes the first multicast address is dropped.

FIG. 4 is an illustration of a representation of a multicast address management policy, according to an embodiment. FIG. 4 illustrates a scenario in which four multicast addresses/four epochs are accepted at a particular time, t. Multicast address t 481 represents an accepted multicast address associated with an epoch containing time t. For example, a group key embedded within a randomness field of multicast address t 481 can be calculated based on a shared secret and the epoch containing time t. Multicast address t-1 482 represents another accepted multicast address associated with the epoch immediately preceeding the epoch containing time t. In some instances, the same shared secret can be used to calculate the group key embedded in multicast address t 481 and the group key embedded in or bound to multicast address t-1 482 (optionally in conjunction with time t and time t-1, respectively). In other instances, the group key (or a shared secret used to calculate the group key) embedded within the randomness field of multicast address t-1 482 can be the shared secret based on which multicast address t 481 is calculated. For example, a cryptographic function can be applied to the group key (or a shared secret used to calculate the group key) embedded within the randomness field of multicast address t-1 482 to produce a new pseudorandom value (e.g., a new group key), which can be bound to multicast address t 481.

Similarly, a group key embedded within a randomness field of multicast address t-1 482 can be calculated based on a shared secret and the epoch immediately preceding the epoch containing time t. Similarly multicast address t-2 483 and multicast address t-3 484 can be associated with two epochs prior to the epoch containing time t and three epochs prior to the epoch containing time t, respectively.

In some embodiments, each epoch can have a common predetermined and/or configurable duration. The duration of an epoch can be measured in milliseconds, hours, days, or any other suitable time period. For example, a high value multicast network such as might be used for critical infrastructure, defense, or national security may have very short epochs, such as 10 ms or 100 ms such that the address(es) used to transmit data to the organization evolve and/or are depreciated vary rapidly, perhaps more rapidly than addresses can be harvested and/or analyzed by a malicious actor. In other examples, such as low-volume sensor network, which may be part of the Internet of Things (IoT), epochs may be hours or days long. In such a scenario, nodes, which may have limited computational and power resources, may only report data with a relatively low frequency (e.g., hourly or daily) and power and computational resources can be conserved by less frequent calculations of group keys. In some embodiments, epochs can be mutually exclusive. Similarly stated, each instance of time can belong to exactly one epoch. In other embodiments, epochs can overlap.

Each node of a multicast network can be synchronized using a Network Time Protocol (NTP), external timers (e.g., satellite and/or atomic) accessible to the nodes, and/or pre-synchronized internal timers. In some instances, time is an input of a function used to calculate a group key. For example, in an embodiment where each epoch has a duration of one minute, the number of minutes after midnight and the previous group key can be inputs of a function used to calculate the next group key.

Synchronized updates to the epoch and/or multicast address can be based on a shared secret possessed by each node and/or trusted source using cryptographic key management protocols. Key management protocols can further be used to update the shared secret, de-authorize a node (e.g., in the event a node is compromised or stolen), and/or update the recipients who receive multicast data. For example, key management protocols can be used to split a multicast group of recipients into one or more multicast groups each having a new and different multicast address, update the multicast group to include one or more new members, and/or remove a node and/or recipient from receiving multicast data. For example, nodes (e.g., routers and/or source(s)) can be communicatively coupled to an administrator device that can be operable to send a control signal to one or more nodes (e.g., source(s) and/or router(s)) to cause the node to update and/or replace a shared secret and/or update the recipients who receive multicast data. In some instances, nodes can be configured to propagate such a control signal such that the control signal is multicast to each node to update and/or replace a shared secret and/or update recipients who receive multicast data.

As shown, in the example of FIG. 4, four epochs/multicast addresses are accepted and/or valid. Having multiple epochs/multicast addresses being accepted and/or valid at a particular instant can facilitate a smooth transition between multicast address updates. For example, once one epoch ends, the multicast address associated with that epoch may not immediately be depreciated, rather, in some instances, one or more older addresses associated with previous epochs can continue to be accepted and/or treated as valid. In this way small differences in synchronization between nodes, and data sent near an end of an epoch are less likely to result in packet loss.

Although four epochs/multicast addresses are shown as being accepted and/or valid in FIG. 4, it be understood in other embodiments any other number of epochs/multicast addresses can be accepted and/or valid at any given time. Furthermore, it should be understood that epoch duration and/or number of accepted epochs can be variable and/or configurable. For example, in response to a node detecting a DoS attack (e.g., by observing data having multicast addresses that are depreciated and/or invalid) the node can reduce the number of accepted and/or valid addresses and/or shorten the duration of an epoch. As another example, the epoch duration and/or number of accepted epochs can be configured by an administrator logging into a node and/or sending a control signal to the node via a network. As yet another example, in response to a node detecting a DoS attack and/or receiving a signal from a control device indicating that an attack is occurring, the node can inform neighboring nodes of the attack, which can in turn reduce epoch duration and/or number of accepted epochs. In some such instances the indication of the attack can be propagated through an entire multicast network in this manner (e.g., nodes informing neighboring nodes). In other instances, a single node or portion of the multicast network can operate with shorter epochs and/or fewer accepted keys than other nodes and/or portions of the network.

FIG. 5 is a flow chart of a method for operating a node (e.g., a router, switch, or other suitable network device) of a multicast network, according to an embodiment. A multicast network that includes nodes operating the method of FIG. 5 can be resistant to DoS attacks.

At 510, first data for routing to a multicast group can be received from, for example, the source 110 or a router 122 as described above in reference to FIG. 1. The first data can include a first multicast address similar to the multicast address described above with reference to FIG. 2. The node can be operable to determine a current time, at 520, and determine what multicast address(es) are currently accepted and/or valid, at 530. For example, the node can store a shared secret in memory and be operable to a calculate group key(s). For example, at the start of each epoch or at any other suitable time, each node can be operable to perform a calculation (e.g., a cryptographic calculation) on a shared secret to produce an accepted valid group key for that epoch. Each node can be configured to manage which group key(s) are currently accepted and/or valid based on the current time. For example, each node can be operable to determine that a group key associated with the epoch containing the current time and group key(s) associated with one or more previous epochs are accepted and/or valid. In addition or alternatively, each node can maintain a table (e.g., a routing table or a forwarding table) that indicates a destination and/or next hop for valid multicast addresses. As multicast addresses become depreciated (e.g., expire and/or are revoked), they may fall off the table. As described in further detail herein, when data that includes a multicast address that is not on the table is received (e.g., when there is no valid route and/or destination), the data can be dropped.

At 540, the first data can be evaluated. For example, the node can determine, based on the first multicast address, whether the first data should be sent towards a group of recipients. In some embodiments, the node can consult a table (e.g., a routing table or forwarding table) to determine whether a destination and/or route exits. In such an embodiment, the node may not specifically parse the multicast address and/or inspect the payload of the first data. In other embodiments, the node can be configured to extract a key from a randomness field of the first multicast address and compare the key extracted from the randomness field to group key(s) that were determined to be currently accepted and/or valid, at 530. In some instances, the key extracted from the randomness field of the first multicast address can be directly compared to the currently accepted and/or valid group keys to determine if a match exists. In other instances, the key extracted from the randomness field of the first multicast address can be compared to hash(es) or other transformations of the currently accepted and/or valid group key(s).

At 550, the first data can be forwarded towards members of the multicast group 132, as discussed above with reference to FIG. 1. Similarly stated, the node, having located a next-hop and/or route associated with the first multicast address and/or having validated the first multicast address, the first data can be sent towards members of the multicast group 132.

At 560, second data for routing to the multicast group can be received by the node. The second data can include a second multicast address. The second data can be evaluated at 570, which can be similar to evaluating the first data, at 540, as described above. The second data can be dropped at 580, based on the second multicast address being invalid. For example, a key within a randomness filed of the second multicast address may not match an accepted and/or valid group key. In such an instance, a table (e.g., a routing table or forwarding table) may not include a destination and/or next hop for the second data and/or second multicast address. For example, the second multicast address can be the same as the first multicast address (e.g., the key within the randomness field of the second multicast address can be the same as the key within the randomness filed of the first multicast address), but the second data can be received, at 560, after the first data is received, at 540, and after an accepted and/or valid key based on which the first data was accepted and forwarded has expired, been revoked, or otherwise been depreciated. As another example, the second data can be received, at 560, before or within the same epoch as the first data, but the key within the randomness field of the second multicast address can match a depreciated group key or no group key at all at the time when the second data is received. In such an example, a table (e.g., a routing table or forwarding table) may not include a destination and/or next hop for the second data.

In some embodiments data that is dropped (e.g., based on including an invalid and/or depreciated multicast address) can be logged, analyzed, and/or reported to an administrator device. In this way, each node can serve as a sensor monitoring the status of the multicast network and collect and/or report data indicative of an attack. For example, if one or more nodes receives an unusual amount of data (e.g., an amount of data and/or data received at a frequency that exceeds a predetermined and/or configurable threshold) including invalid or depreciated multicast addresses, it can be indicative of an attack. Similarly stated, an unusual data volume and/or an unusual number of packets over an interval (e.g., predetermined and/or configurable) of time can be indicative of an attack. In response an administrator device monitoring the network can react by, for example, decreasing epoch duration and/or reducing the number of currently accepted epochs/multicast addresses. Similarly stated, an administrator device can send a control signal to one or more nodes to cause such node(s) to decrease epoch duration and/or number of currently accepted epochs/multicast addresses. In addition or alternatively, nodes can be configured to automatically and/or independently decease epoch duration and/or reduce the number of currently accepted epochs/multicast addresses in response to receiving an amount of data that includes invalid and/or depreciated multicast addresses that exceeds a threshold. In this way, the attack surface for the multicast network can be decreased in response to detecting an attack. Furthermore, nodes and/or the administrator device can be operable to analyze data that is sent to invalid and/or depreciated multicast address. For example, pattern recognition, heuristics, deep packet inspection and/or other suitable network analysis techniques can be applied to identify commonalities of dropped traffic. Based on such an analysis, additional filters and countermeasures can be implemented and/or deployed. For example, if inspection of malicious data (e.g., data having invalid and/or depreciated multicast addresses) reveals a fingerprint associated with internet-enabled baby monitors, additional filters can be deployed to drop such data independent of whether it includes an accepted and/or valid multicast address.

While various embodiments have been described above, it should be understood that they have been presented by way of example only, and not limitation. Although various embodiments have been described as having particular features and/or combinations of components, other embodiments are possible having a combination of any features and/or components from any of embodiments where appropriate. For example, FIG. 1 describes a multicast network 100 including discrete routers 122, destinations 130, and a source 110. It should be understood, however, that in some instances, for example, in a mesh network, a node can be a source, a router, and/or a destination simultaneously and/or situationally. In addition, FIG. 1 depicts a single source and a single multicast group 132. It should be understood, however, that any number of sources can send data to any number of multicast groups via a multicast network 100. Additionally, a compute entity can be a source of some multicast data and a recipient of other multicast data. As another example, some embodiments describe “data packets.” It should be understood that a data packet refers to any suitable unit of data and includes datagrams and/or other suitable data payloads.

Where methods described above indicate certain events occurring in certain order, the ordering of certain events may be modified. Additionally, certain of the events may be performed repeatedly, concurrently in a parallel process when possible, as well as performed sequentially as described above.

Some embodiments described herein relate to processors and/or memory. A processor can be a general purpose processor, a Field Programmable Gate Array (FPGA), an Application Specific Integrated Circuit (ASIC), a Digital Signal Processor (DSP), and/or the like. Memory can be for example, a random access memory (RAM), a memory buffer, a hard drive, a database, an erasable programmable read-only memory (EPROM), an electrically erasable read-only memory (EEPROM), a read-only memory (ROM) and/or so forth. In some embodiments, the memory 414 stores instructions to cause the processor 412 to execute modules, processes and/or functions.

Some embodiments described herein relate to a computer storage product with a non-transitory computer-readable medium (also can be referred to as a non-transitory processor-readable medium) having instructions or computer code thereon for performing various computer-implemented operations. The computer-readable medium (or processor-readable medium) is non-transitory in the sense that it does not include transitory propagating signals per se (e.g., a propagating electromagnetic wave carrying information on a transmission medium such as space or a cable). The media and computer code (also can be referred to as code) may be those designed and constructed for the specific purpose or purposes. Examples of non-transitory computer-readable media include, but are not limited to: magnetic storage media such as hard disks, floppy disks, and magnetic tape; optical storage media such as Compact Disc/Digital Video Discs (CD/DVDs), Compact Disc-Read Only Memories (CD-ROMs), and holographic devices; magneto-optical storage media such as optical disks; carrier wave signal processing modules; and hardware devices that are specially configured to store and execute program code, such as Application-Specific Integrated Circuits (ASICs), Programmable Logic Devices (PLDs), Read-Only Memory (ROM) and Random-Access Memory (RAM) devices.

Examples of computer code include, but are not limited to, micro-code or micro-instructions, machine instructions, such as produced by a compiler, code used to produce a web service, and files containing higher-level instructions that are executed by a computer using an interpreter. For example, embodiments may be implemented using Java, C++, or other programming languages (e.g., object-oriented programming languages) and development tools. Additional examples of computer code include, but are not limited to, control signals, encrypted code, and compressed code. 

What is claimed is:
 1. A non-transitory processor readable medium storing code representing instructions configured to be executed by a processor, the code comprising code to cause the processor to: receive first data addressed to a first multicast address, the first multicast address including a first randomness field containing a first group key associated with a first time period; determine a current time period; forward the first data to a group of destination nodes based on the first time period being less than a threshold number of time periods before the current time period; receive second data addressed to a second multicast address, the second multicast address including a second randomness field containing a second group key associated with a second time period; and drop the second data based on the second time period being more than a threshold number of time periods before the current time period.
 2. The non-transitory processor readable medium of claim 1, the code further comprising code to cause the processor to send a signal to an administrator device reporting that the second data was dropped.
 3. The non-transitory processor readable medium of claim 1, wherein the first time period, the second time period, and the current time period each have a common predetermined length.
 4. The non-transitory processor readable medium of claim 1, wherein the first group key is a value derived from a shared secret, the first multicast address is an internet protocol version six (IPv6) multicast address having the first group key placed into a randomness field within the IPv6 multicast address.
 5. The non-transitory processor readable medium of claim 1, the code further comprising code to cause the processor to: receive, from an administrator device, an indication of an attack; and reduce the threshold number of time periods in response to the indication of the attack.
 6. The non-transitory processor readable medium of claim 1, the code further comprising code to cause the processor to: receive, from an administrator device, an indication of an attack; and reduce a length of time associated with the current time period in response to the indication of the attack.
 7. The non-transitory processor readable medium of claim 1, wherein the second data is from a plurality of data addressed to the second multicast address, the code further comprising code to cause the processor to: determine that an attack is in progress based on the plurality of data exceeding a threshold; and reduce a length of time associated with the current time period in response to determining that the attack is in progress.
 8. A non-transitory processor readable medium storing code representing instructions configured to be executed by a processor, the code comprising code to cause the processor to: receive, at a first time, first data for routing to a group; send the first data to the group via a first multicast address, the first multicast address based, at least in part, on a first group key derived from a first shared secret, the first group key associated with a first time period that includes the first time; receive, at a second time, second data for routing to the group; send the second data to the group via a second multicast address different from the first multicast address, the second multicast address based, at least in part, on a second group key different from the first group key, the second group key derived from a second shared secret, the second group key associated with a second time period that includes the second time.
 9. The non-transitory processor readable medium of claim 8, the code further comprising code to cause the processor to: receive, at a third time after the first time, third data for routing to the group, the third data including the first multicast address; and drop the third data based on the first multicast address being an invalid address at the third time.
 10. The non-transitory processor readable medium of claim 8, the code further comprising code to cause the processor to: perform calculation on the shared secret to determine an accepted group key associated with the first time period, the first group key matching the accepted group key, the first data sent to the group based on the first group key matching the accepted group key.
 11. The non-transitory processor readable medium of claim 8, the code further comprising code to cause the processor to: perform, at a third time, a calculation on the second shared secret to determine an accepted group key associated with the second time period, the second group key matching the accepted group key associated with the second time period; perform, at fourth time, a calculation on a third shared secret to determine an accepted group key associated with a third time period, the third time period including the fourth time and excluding the third time, the fourth time being a predetermined period of time after the third time; and depreciate the first multicast address at or after the fourth time.
 12. The non-transitory processor readable medium of claim 8, the code further comprising code to cause the processor to: perform a calculation on the first shared secret to determine a first accepted group key, the first group key matching the first accepted group key at the first time; receive, from an administrator device, an instruction to update the first accepted group key; depreciate the first accepted group key; perform, in response to receiving the instruction to update the first accepted group key, a calculation on the second shared secret to determine a second accepted group key; receive, at a third time, third data to route via the first multicast address, the third time being after the second accepted group key is determined and after the first accepted group key is depreciated; and drop the third data based on the first group key not matching any accepted group key at the third time.
 13. The non-transitory processor readable medium of claim 8, the code further comprising code to cause the processor to: receive, at a third time after the second time, an instruction from an administrator device to remove a node from the group; and perform, at a fourth time after the third time, a calculation on a third shared secret to determine an accepted group key associated with a third time period and disassociated with the node; receive, at a fifth time after the fourth time, third data for routing to the group; send the third data to the group and not to the node via a third multicast address based, at least in part, on the accepted group key associated with the third time period.
 14. An apparatus, comprising: an input port configured to receive a data packet for distribution to a group, the data packet including a multicast address; a processor operatively coupled to the input port, the processor configured to: calculate, at a first time from a plurality of times, a first group key from a plurality of group keys, the first group key calculated based on a first shared secret, the first group key associated with a first time period; calculate, at a predetermined time after the first time, a second group key from the plurality of group keys, the second group key calculated based on a second shared secret, the second group key associated with a second time period; manage the plurality of group keys such that at any time from the plurality of times at least one accepted group key exists, the at least one accepted group key being from the plurality of group keys; and compare a portion of the multicast address to a value determined based on an accepted group key from the at least one accepted group key; and an output port operatively coupled to the processor, the output port configured to send the data packet to the group in response to the processor indicating that the portion of the multicast address matches the value determined based on the accepted group key from the at least one accepted group key.
 15. The apparatus of claim 14, wherein the second shared secret is based on the first group key.
 16. The apparatus of claim 14, wherein the first shared secret is the second shared secret.
 17. The apparatus of claim 14, wherein the output port is configured to send the data packet to the group via a plurality of intermediate multicast routers.
 18. The apparatus of claim 14, wherein the first group key is an accepted group key from a second time from the plurality of times to a third time from the plurality of times, a period between the second time and the third time being predetermined.
 19. The apparatus of claim 14, wherein the processor is configured to: receive an indication of a duration for which a group key from the plurality of group keys is an accepted group key; and manage the plurality of group keys such that the first group key is an accepted group key from a second time from the plurality of times to a third time from the plurality of times, a period between the second time and the third time equaling the duration.
 20. The apparatus of claim 14, wherein: the data packet is a first data packet; the multicast address is a first multicast address; the accepted group key is a first accepted group key; the input port is configured to receive a second data packet for distribution to the group from a sender node; the processor is configured to assign a second multicast address to the second data packet by binding a value calculated based on a second accepted group key from the at least one accepted group key to a randomness field of an internet protocol version six (IPv6) multicast address.
 21. The apparatus of claim 14, wherein the data packet is from a plurality of data packets, each data packet from the plurality of data packets including a multicast address from a plurality of multicast addresses, the processor configured to: compare a portion of each multicast address from the plurality of multicast addresses to a value determined based on the at least one accepted group key; monitor a frequency with which the multicast address from the plurality of multicast addresses received at the input port does not match a value determined based on the at least one accepted group key; and send an indication of an attack to an administrator device when the frequency exceeds a predetermined threshold.
 22. The apparatus of claim 14, wherein the data packet is from a plurality of data packets, each data packet from the plurality of data packets including a multicast address from a plurality of multicast addresses, the processor configured to: compare a portion of each multicast address from the plurality of multicast addresses to a value determined based on the at least one accepted group key; monitor a frequency with which the multicast address from the plurality of multicast addresses received at the input port does not match a value determined based on the at least one accepted group key; and reduce a number of group keys that are accepted group keys in response to the frequency exceeding a predetermined threshold. 